package cn.iocoder.yudao.module.asasc.controller.admin.campaign.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 广告数据新增/修改 Request VO")
@Data
public class CampaignDataSaveReqVO {

    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14541")
    private Long id;

    @Schema(description = "日期")
    private LocalDate date;

    @Schema(description = "国家或地区代码")
    private String countryOrRegion;

    @Schema(description = "展示次数")
    private Integer impressions;

    @Schema(description = "点击次数")
    private Integer taps;

    @Schema(description = "总安装次数")
    private Integer installs;

    @Schema(description = "新安装次数")
    private Integer newDownloads;

    @Schema(description = "重复安装次数")
    private Integer reDownloads;

    @Schema(description = "启用定位安装次数")
    private Integer latOnInstalls;

    @Schema(description = "禁用定位安装次数")
    private Integer latOffInstalls;

    @Schema(description = "点击率")
    private BigDecimal ttr;

    @Schema(description = "每次转化费用")
    private BigDecimal avgCpaAmount;

    @Schema(description = "转化货币")
    private String avgCpaCurrency;

    @Schema(description = "每次点击付费")
    private BigDecimal avgCptAmount;

    @Schema(description = "点击货币")
    private String avgCptCurrency;

    @Schema(description = "每千次展示付费")
    private BigDecimal avgCpmAmount;

    @Schema(description = "展示货币")
    private String avgCpmCurrency;

    @Schema(description = "支出金额")
    private BigDecimal localSpendAmount;

    @Schema(description = "支出货币")
    private String localSpendCurrency;

    @Schema(description = "转化率")
    private BigDecimal conversionRate;

    @Schema(description = "广告系列", example = "24587")
    private Long campaignId;

    @Schema(description = "广告系列名称", example = "张三")
    private String campaignName;

    @Schema(description = "是否删除")
    private Boolean isDeleted;

    @Schema(description = "广告系统状态", example = "2")
    private String campaignStatus;

    @Schema(description = "应用名称", example = "张三")
    private String appName;

    @Schema(description = "应用", example = "25557")
    private Long adamId;

    @Schema(description = "状态", example = "2")
    private String servingStatus;

    @Schema(description = "国家或地区")
    private String countriesOrRegions;

    @Schema(description = "修改时间")
    private LocalDateTime modificationTime;

    @Schema(description = "日预算金额")
    private Double dailyBudgetAmount;

    @Schema(description = "日预算货币")
    private String dailyBudgetCurrency;

    @Schema(description = "展示状态", example = "1")
    private String displayStatus;

    @Schema(description = "广告展示位置")
    private String supplySources;

    @Schema(description = "广告渠道类型", example = "2")
    private String adChannelType;

    @Schema(description = "账户", example = "26593")
    private Long orgId;

    @Schema(description = "计费方式")
    private String billingEvent;

    //****************** 新增 AppStore Sales 字段 ************/
    /**
     * 订阅销售额
     */
    private BigDecimal ascSales;
    /**
     * 订阅所得
     */
    private BigDecimal ascProceeds;
    /**
     * 展示次数
     */
    private Integer ascImpressions;
    /**
     * 点击次数
     */
    private Integer ascTaps;

    /**
     * 首次安装次数
     */
    private Integer ascInstalls;

    /**
     * 重新安装次数
     */
    private Integer ascReInstalls;
    /**
     * 更新安装次数
     */
    private Integer ascUptInstalls;
    /**
     * 点击率
     */
    private BigDecimal ascTtr;
    /**
     * 转化率
     */
    private BigDecimal ascConversionRate;
    /**
     * 试订数
     */
    private Integer ascTrial;
    /**
     * 订阅数
     */
    private Integer ascRenewal;
    /**
     * 退款数
     */
    private Integer ascRefund;
    /**
     * 订阅退款销售额
     */
    private BigDecimal ascRefundSales;
    /**
     * 订阅退款所得
     */
    private BigDecimal ascRefundProceeds;

    /**
     * 自然新增=总首次安装-广告安装(经点击)
     */
    private Integer naturallyInstalls;
    /**
     * 利润=订阅所得-订阅退款所得-广告支出
     */
    private BigDecimal profit;
}